#pragma once

#include <deque>


namespace qh
{
	template<class T, class Container = std::deque<T>>
	class queue
	{
	public:
		void push(const T& t) { _q.push_back(t); }
		void pop() { _q.pop_front(); }
		T& front() { return _q.front(); }
		const T& front() const { return _q.front(); }
		bool empty() { return _q.empty(); }
		size_t size() const { return _q.size(); }

	private:
		std::deque<T> _q;
	};
}